Développement Fullstack d'un système d'information scientifique
Le projet concernait le développement, le déploiement et l'installation du Système d'information Scientifique OpenSilex. Il s'est déroulé entre novembre 2021 et juillet 2022, à Montpellier. Plusieurs enjeux ont émergé au fil des différentes missions, toutes en lien avec OpenSilex. Le premier consistait en l'ajout d'une fonctionnalité permettant le suivi des trajectoires d'objets scientifiques, associées aux données environnementales. Un autre objectif était le développement d'un package R Shiny pour faciliter la connexion à OpenSilex via des applications, ainsi que la migration des données de lacs (projet Answer) vers la version la plus récente d'OpenSilex. Enfin, il s'agissait d'installer et configurer une nouvelle instance d'OpenSilex pour la gestion des données expérimentales sur la vigne et le vin, dans le cadre du projet Sinfonia. Les parties impliquées comprenaient l'UMR MISTEA pour les développements liés à OpenSilex, l'IFV pour le développement open-source et la gestion de l'instance Sinfonia, et le projet Answer pour la migration des données lacustres.
Tâches & Objectifs
Mon rôle principal dans ce projet était celui de développeur, avec des missions spécifiques de conseil en web sémantique, notamment pour la modélisation des données dans le projet Sinfonia. Les objectifs variaient selon les missions : permettre l'association des données météorologiques au déplacement d'un objet scientifique, assurer la connexion fluide avec le serveur via un client R performant dans une bibliothèque Shiny réutilisable, migrer la version d'OpenSilex pour le projet Answer, et enfin, configurer et déployer l'instance Sinfonia d'OpenSilex. La réussite de chaque tâche se mesurait par le bon fonctionnement du système ou des fonctionnalités spécifiques, dans le cadre de la mission définie.
Actions et Développement
Concrètement, j'ai ajouté de nouvelles fonctionnalités au logiciel OpenSilex, construit une bibliothèque générique pour les applications Shiny, réalisé des ETL personnalisés pour migrer les données entre deux versions majeures d'OpenSilex, et installé ainsi que configuré une nouvelle instance du système. Ces actions s'inscrivaient dans un cadre de projets de recherche et développement, en collaboration étroite avec des responsables scientifiques et techniques. L'utilisation d'ontologies, souvent complexe à manipuler, était centrale dans ce système d'information. J'ai travaillé avec l'UMR MISTEA, l'IFV, des agronomes, des ingénieurs agronomiques et l'équipe de développement d'OpenSilex. Parmi les défis rencontrés, le code, encore en phase de prototypage, évoluait rapidement, compliquant les migrations manuelles et la modélisation en raison des spécificités de chaque domaine scientifique. Le manque d'automatisation et les spécificités des clients API ont également compliqué certaines tâches. Les décisions techniques étaient prises collectivement avec l'équipe de développement et le comité de guidage, en tenant compte des besoins des utilisateurs et des contraintes scientifiques.
Résultats
Les résultats de ce projet incluent l'installation et la configuration d'une nouvelle instance d'OpenSilex pour la gestion des données expérimentales sur la vigne et le vin (Sinfonia), la migration réussie des données vers la version la plus récente du logiciel, ainsi que la création d'un package R aboutissant à la construction d'une application Shiny permettant une visualisation plus spécifique des données. Parmi les enseignements tirés, j'ai constaté l'importance cruciale des outils de génération de code et du respect des spécifications pour garantir le bon fonctionnement d'un système d'information. La migration manuelle des données, compte tenu des spécificités des différents domaines scientifiques, nécessite une rigueur particulière. L'évolution rapide du modèle de base, parfois sans rétrocompatibilité, peut nuire à l'utilisateur, d'où l'importance du respect du versionnage sémantique. Enfin, des compétences techniques solides dans la construction de clients API, notamment en R/Shiny, sont indispensables.
Stack technique
Les technologies utilisées comprenaient Python, R, Shiny, Java et le langage SPARQL. Python a servi pour les scripts de migration de données, R/Shiny pour la création du package client d'OpenSilex sous forme de modules réutilisables, et Java pour le développement du service de récupération des données environnementales suivant les trajectoires des objets scientifiques. L'un des défis techniques majeurs a été la migration des données pour le projet Answer. Le modèle ayant considérablement évolué entre les versions, et les données étant spécifiques à des simulations mathématiques, de nombreux ajustements ont été nécessaires pour les adapter au nouveau modèle. Le manque de documentation a également compliqué ce processus. Le développement du service de récupération des données environnementales s'est heurté à la complexité du modèle physique des données et à des problèmes d'architecture logicielle, rendant la tâche plus difficile qu'elle ne l'aurait dû être.